#!/usr/bin/env python
# -*- coding: utf8 -*-


import webapp2
from google.appengine.ext.webapp import template
from webapp2_extras import json
import translations
import random
import re


class Default(webapp2.RequestHandler):
    def renderHtml(self, context):
        if self.request.host.count('magniterra'):
            context.update({'trunk': 'http://magniterra-languages.googlecode.com/svn/trunk/'})
        else: context.update({'trunk': ''})
        self.response.out.write(
                        template.render(self.__class__.__name__ + '.html',
                                        context)
                    )
    
    def renderJson(self, obj):
        self.response.out.write(json.encode(obj))


class HomeHandler(Default):
    def get(self):
        level = self.request.get('level')
        context = {'resources': translations.__all__, 'dst_lang': 'en'}
        if level:
            ru = __import__('translations.%s.%s' % (level, 'ru'), fromlist='ru')
            en = __import__('translations.%s.%s' % (level, 'en'), fromlist='en')
            p1 = r'\s+|-'
            p2 = r'\W+'
            tasks = map(lambda x,y: (x,y,level +'/' + re.sub(p2, '', re.sub(p1, '_', x.lower())).strip('_')), en.items, ru.items)
            random.shuffle(tasks)
            self.renderJson(tasks)
        else:
            self.renderHtml(context)


app = webapp2.WSGIApplication([
   ('/', HomeHandler),
], debug=True)


"""
1. Фразы этикета -- Hello world -- 45
2. level 1 -- To be or not to be -- Глагол быть (являться/находиться)







3. First verbs


3. level 2 -- Questions and answers -- Вопросы ответы:
Кто это сказал?
Кто видел ...?
Кто взял мой карандаш?
Что ты ешь?
Что ты видишь?
Что ты будешь делать?
Какой это цвет?
Какой у 
    # who? - кто? Кто это сказал? все, кое-кто, никто
    # what? — что? какой? Что ты ешь? всё, кое-что, ничего         какой какая какие, всякий какой-то никакой
    # why? – почему? почему ты не работаешь потому что
    # where? –где, куда? везде кое-где нигде, всюду, кое-куда, никуда
    # how? – как? как тебя зовут, сколько у тебя друзей, подруг, времени
    # when? – когда? всегда часто редко иногда никогда
        обстоятельства времени: often - часто
            ever - когда-нибудь
            never - никогда
            always - всегда
            seldom - редко
            just - только что
            already - уже
            usually - обычно
            sometimes - иногда
            soon - скоро

_abstract 15
_weather 15
_animal 36
_clothing 48
_time 108
basic_phrases 0
_adjective 121
_basic 45
5 197
_color 18
_house 131
_family 18
_food 70
_number 65

Примеры с наречиями -- 30: http://www.native-english.ru/grammar/english-adverbs
Возвратные местоимения -- 40: себя себе собой -- 3*13 = 40 (примеры http://www.alleng.ru/mybook/3gram/5pron4.htm)
вспомогательные глаголы --60: let want can could should must (примеры из яндекса) = 60
    could -- не мог бы прийти, should - тебе нужно идти, must -- ты должен остаться
Степени сравнения прилагательных -- 60: более, менее, самый
Причастия -- 60
Предлоги
Местоимения притяжательные и вторая форма

100 глаголов


!!!!!!!!!!!!!!!!!!!
живой образ, мотивация, присутствие, вдохновение, регулярность
начинать говорить как можно раньше, обо всем подряд даже о чепухе, не бояться ошибок
смотреть знакомые фильмы без титров, слушать приятные песни, читать книги, писать дневник




причастия -- 30 * 2 = 60

дорога была расчищена, расчищенная дорога (емчисло 1, нпбвремя 1, уотр. 1, + уотр )
дом будет построен
книга прочитана
письмо написано
доло сделано
слово сказано
получено
отправлено
использовано
найдено
действия согласованы
изменено
закрыто
открыто
прожито
обещано
начато
остановлено
изучено
предложено
взято
рассказано
оставлено
услышано
оплачена
выращено
потеряно
нарисован
машина сломана, сломанная машина
время потрачено
подарки куплены
"""


tasks = {
'level_1': {
    "он или она": "he or she",
    "он и она": "he and she",
    "он, но не она": "he, but not she",
    "да или нет": "yes or no",
    "брат и сетра": "brother and sister",
    "вежливый, но не искренний": "polite, but not sincere",
    "может быть": "maybe",
    "Пожалуйста, помогите мне!": "Help me please!",
    "Который час?": "What time is it?",
    "Приятно познакомиться!": "Nice to meet you!",
    "Большое спасибо!": "Thank you very much!",
    "Будь здоров!": "Bless you!",
    "Войдите!": "Come in!",
    "Да": "Yes",
    "Давай!": "Come on!",
    "До свидания!": "Goodbye!",
    "Добро пожаловать!": "Welcome!",
    "Доброе утро": "Good morning",
    "Добрый вечер": "Good evening",
    "Добрый день": "Good afternoon",
    "Здравствуйте": "Hello",
    "Извините": "Sorry",
    "Как дела?": "How are you?",
    "Как это называется?": "What's this called?",
    "Ладно": "Ok",
    "Мне это нравится": "I like it",
    "Не волнуйся": "Don't worry",
    "Неплохо": "Not bad",
    "Нет": "No",
    "Ничего страшного": "No problem",
    "Одну минутку": "Just a minute",
    "Пойдемте!": "Let's go!",
    "Пока!": "Bye!",
    "Посмотри!": "Look!",
    "Правда?": "Really?",
    "Прекрати!": "Stop it!",
    "Привет!": "Hi!",
    "Простите, могу я войти?": "Excuse me, can I come in?",
    "Спасибо!": "Thank you!",
    "Спокойной ночи": "Goodnight",
    "Удачи!": "Good luck!",
    "Чудесно!": "Great!",
    "Я знаю": "I know",
    "Я не знаю": "I don't know",
    "Я не понимаю": "I don't understand",
    "Я понимаю": "I understand",
},
'базовые предлоги': {
    "in": "в",
    "on": "на",
    "behind": "за",
    "over": "над",
    "under": "под",
    "to": "к",
    "from": "из",
    "through": "через",
    "without": "без",
    "with": "с",
    #before after
},
'time': [
    'will %s %s',
    '%s will %s',
    '%s will not %s',
    'do %s %s',
    '%s %s',
    '%s do not %s',
    'did %s %s',
    '%s %s',
    '%s did not %s',
],
'verbs': {
    "иметь": ["have", "had", "has"],
    "делать": ["do", "did", "does"],
    "говорить": ["say", "said", "says"],
    "получать": ["get", "got", "gets"],
    "идти": ["go", "went", "goes"],
    "знать": ["know", "knew", "knows"],
    "брать": ["take", "took", "takes"],
    "приходить": ["come", "came", "comes"],
    "видеть": ["see", "saw", "sees"],
},
'verbs_2': {
    "делать": ["make", "made", "makes"],
    "смотреть": ["look", "looked", "looks"],
    "хотеть": ["want", "wanted", "wants"],
    "думать": ["think", "thought", "thinks"],
    "давать": ["give", "gave", "gives"],
    "использовать": ["use", "used", "uses"],
    "спрашивать": ["ask", "asked", "asks"],
    "находить": ["find", "found", "finds"],
    "рассказывать": ["tell", "told", "tells"],
},
'vopros': {

},
'pronoun': [
    # it + дополнить на примере испанского
    ("I", "me", "my"),
    ("we", "us", "our"),
    ("you", "you", "your"),
    ("he", "him", "his"),
    ("she", "her", "her"),
    ("they", "them", "their"),
],
'qwe': {
    "": "",
},
}
